import router from './router'
import nProgress from 'nprogress'
import 'nprogress/nprogress.css'
import store from './store'

// 白名单
const whiteList = ['/login', '/404']
// 前置守卫
// to 到哪里去  to是一个对象 含有属性path
// from 从哪里来
// next --必须执行的函数 不执行页面会卡住(空白) 有三种状态 pending fullfiled rejected
// next() 放过通行   从login => dashiboard(主页) =>顺利通行
// next(false) 终止跳转  从login => dashiboard(主页) =>留在login
// next(地址) 跳转地址
router.beforeEach(async(to, from, next) => {
  nProgress.start() // 开启进度条
  if (store.getters.token) {
    if (to.path === '/login') {
      next('/')
      nProgress.done() // 关闭进度条
    } else {
      if (!store.getters.userId) {
        // 获取用户资料
        await store.dispatch('user/getUserInfo')
      }
      next()
    }
  } else {
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
      nProgress.done() // 关闭进度条
    }
  }
  next()
})

// 后置守卫
router.afterEach(() => {
  nProgress.done() // 关闭进度条
})
